Module d'extension
OLEM possède 4 emplacements d'extension, dont 2 sont équipés d'un connecteur qui permet d'ajouter à OLEM de nouvelles fonctionnalités nécessitant des composants électroniques. Les connecteurs ont 4 broches :
- P1 et P2 transportent des signaux logiques
- P3 est la masse (GND)
- P4 est en 3V3 et peut fournir jusqu'à 300 mA
Les broches de tous les emplacements sont reliées : P1 d'un emplacement d'extension est relié à P1 de l'autre emplacement (et de même pour toutes les Px).
Les modules d'extension peuvent être utilisés en mode GPIO, PWM ou I2C, choisi avec extmod_mode_set() et les constantes EXTMOD_GPIO, EXTMOD_PWM et EXTMOD_I2C.
Mode GPIO
En mode GPIO, P1 et P2 peuvent être contrôlées comme de simples GPIO en sortie. Dans ce cas, P1 est GPIO1 et P2 est GPIO2. Utilisez extmod_gpio_set() avec les constantes EXTMOD_GPIO1, EXTMOD_GPIO2, LOW et HIGH.
Exemple
Les deux broches passent de LOW à HIGH toutes les 3 secondes.
import olem
print("Starting extension module gpio periodic test")
olem.extmod_mode_set(olem.EXTMOD_GPIO)
for i in range(0, 10):
olem.extmod_gpio_set(olem.EXTMOD_GPIO1, olem.LOW)
olem.extmod_gpio_set(olem.EXTMOD_GPIO2, olem.LOW)
olem.delay_ms(3000)
olem.extmod_gpio_set(olem.EXTMOD_GPIO1, olem.HIGH)
olem.extmod_gpio_set(olem.EXTMOD_GPIO2, olem.HIGH)
olem.delay_ms(3000)
olem.extmod_gpio_set(olem.EXTMOD_GPIO1, olem.LOW)
olem.extmod_gpio_set(olem.EXTMOD_GPIO2, olem.LOW)
print("End of extension module gpio periodic test")
Mode PWM
En mode PWM, P1 et P2 peuvent générer des signaux dont le rapport cyclique et la période varient. Utilisez extmod_pwm_set() avec les constantes EXTMOD_GPIO1 et EXTMOD_GPIO2.

Exemple
Le rapport cyclique de P1 augmente pendant que celui de P2 diminue.
import olem
period = 20
print("Start pwm")
olem.extmod_mode_set(olem.EXTMOD_PWM)
for i in range(0, period):
print("compare value " + str(i))
olem.extmod_pwm_set(olem.EXTMOD_GPIO1, period, i)
olem.extmod_pwm_set(olem.EXTMOD_GPIO2, period, period - i)
olem.delay_ms(2000)
olem.extmod_mode_set(olem.EXTMOD_GPIO)
olem.extmod_gpio_set(olem.EXTMOD_GPIO1, olem.LOW)
olem.extmod_gpio_set(olem.EXTMOD_GPIO2, olem.LOW)
print("End pwm")
Mode I2C
En mode I2C, P1 est SCL et P2 est SDA. Utilisez extmod_i2c_read() et extmod_i2c_write().
Exemple
Toutes les secondes, 2 octets sont écrits sur le périphérique d'adresse 0x43, puis 4 octets y sont lus.
import olem
print("Starting extension module gpio i2c test")
addr = 0x43
olem.extmod_mode_set(olem.EXTMOD_I2C)
timestamp_start = olem.get_time_ms()
while ((olem.get_time_ms() - timestamp_start) < 20000):
olem.extmod_i2c_write(addr, [0x86, 0x87])
olem.delay_ms(1000)
print(olem.extmod_i2c_read(addr, 4))
olem.delay_ms(1000)
print("End of extension module gpio i2c test")
Constantes et fonctions
Constants
| Constant | Value | Description |
|---|---|---|
LOW | 0 | Low level of a GPIO output. |
HIGH | 1 | High level of a GPIO output. |
EXTMOD_GPIO1 | 1 | Pin P1 of the extension slots. |
EXTMOD_GPIO2 | 2 | Pin P2 of the extension slots. |
EXTMOD_GPIO | 0 | GPIO mode: P1 and P2 are digital outputs. |
EXTMOD_I2C | 1 | I2C mode: P1 is SCL and P2 is SDA. |
EXTMOD_PWM | 2 | PWM mode: P1 and P2 output PWM signals. |
extmod_mode_set(mode)
Initialize the extension slots in the given mode. Only one mode can be used at a time.
| Parameter | Description |
|---|---|
mode | EXTMOD_GPIO, EXTMOD_I2C or EXTMOD_PWM |
extmod_gpio_set(gpio, value)
Set the output level of a pin. Requires the EXTMOD_GPIO mode, see extmod_mode_set().
| Parameter | Description |
|---|---|
gpio | EXTMOD_GPIO1 or EXTMOD_GPIO2 |
value | LOW or HIGH |
extmod_pwm_set(gpio, period, compare_value)
Set the PWM signal of a pin. Requires the EXTMOD_PWM mode, see extmod_mode_set().
| Parameter | Description |
|---|---|
gpio | EXTMOD_GPIO1 or EXTMOD_GPIO2 |
period | period of the signal in ms, as an integer. With 0 the output stays LOW. |
compare_value | time the signal stays HIGH in each period in ms, as an integer |
extmod_i2c_read(addr, length)
Read bytes from a device on the I2C bus. Requires the EXTMOD_I2C mode, see extmod_mode_set().
| Parameter | Description |
|---|---|
addr | address of the device |
length | number of bytes to read |
Returns: list of the bytes read, as integers, or an empty list if the read failed
extmod_i2c_write(addr, data)
Write bytes to a device on the I2C bus. Requires the EXTMOD_I2C mode, see extmod_mode_set().
| Parameter | Description |
|---|---|
addr | address of the device |
data | list of the bytes to write, as integers from 0 to 255 |
Returns: 0 on success, an error code otherwise